﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

namespace KsiazkaKucharska
{
    public partial class WebForm4 : System.Web.UI.Page
    {
        /** Funkcja dodaje ilość danego produktu do produktu w tablicy (jeśli jeszcze nie ma takiego produktu, to go dodaje)
         */ 
        private void dodaj_produkt_do_listy(DataRowView ProduktyRow, DataTable ProduktyDataTable)
        {

            Object [] keys = new Object[2];

            keys[0] = Convert.ToInt32(ProduktyRow["id_produktu"]);
            keys[1] = Convert.ToInt32(ProduktyRow["id_jednostki"]);

            DataRow row = ProduktyDataTable.Rows.Find(keys);

            if (row != null)
            {
                row["ilosc"] = Convert.ToInt32(row["ilosc"]) + Convert.ToInt32(ProduktyRow["ilosc"]);
            }
            else
            {
                row = ProduktyDataTable.NewRow();

                row["id_produktu"] = ProduktyRow["id_produktu"];
                row["nazwa_produktu"] = ProduktyRow["nazwa_produktu"];
                row["id_jednostki"] = ProduktyRow["id_jednostki"];
                row["nazwa_jednostki"] = ProduktyRow["nazwa_jednostki"];
                row["ilosc"] = ProduktyRow["ilosc"];

                ProduktyDataTable.Rows.Add(row);

            }


        }

        /** Po załadowaniu strony
         */ 

        protected void Page_Load(object sender, EventArgs e)
        {

            // Utworzenie tablicy na produkty na liście zakupów

            DataTable MenuDataTable;
            DataTable ProduktyMenuDataTable = new DataTable();
            DataColumn [ ] keys = new DataColumn [ 2 ];


            ProduktyMenuDataTable.Columns.Add(new System.Data.DataColumn("id_produktu", typeof(Int32)));
            ProduktyMenuDataTable.Columns.Add(new System.Data.DataColumn("nazwa_produktu", typeof(String)));
            ProduktyMenuDataTable.Columns.Add(new System.Data.DataColumn("id_jednostki", typeof(Int32)));
            ProduktyMenuDataTable.Columns.Add(new System.Data.DataColumn("nazwa_jednostki", typeof(String)));
            ProduktyMenuDataTable.Columns.Add(new System.Data.DataColumn("ilosc", typeof(Int32)));

            // Klucz tablicy
            keys[0] = ProduktyMenuDataTable.Columns["id_produktu"];
            keys[1] = ProduktyMenuDataTable.Columns["id_jednostki"];

            ProduktyMenuDataTable.PrimaryKey = keys;

            // PObranie z sesji tablicy z przepisami w menu

            if (Session["Menu"] != null)
            {
                MenuDataTable = Session["Menu"] as DataTable;
            }
            else
            {
                MenuDataTable = new DataTable();
            }

            DataView produktyDataView = new DataView();

            // Dodanie produktów każdego przepisu do tablicy produktów na liście zakupów

            foreach (DataRow row in MenuDataTable.Rows)
            {

                ProduktyPrzepisuDataSource.SelectParameters["id_przepisu"].DefaultValue = row["id_przepisu"].ToString();

                produktyDataView = (DataView)ProduktyPrzepisuDataSource.Select(DataSourceSelectArguments.Empty);


                foreach (DataRowView resultRow in produktyDataView)
                {
                    dodaj_produkt_do_listy(resultRow, ProduktyMenuDataTable);
                }


            }

            // Związanie listy produktów z widokiem i wyświetlenie

            ProduktyMenuGridView.DataSource = ProduktyMenuDataTable;
            ProduktyMenuGridView.DataBind();

            Session.Add("Menu", MenuDataTable);



        }
    }
}